<?php
// src/Sdz/BlogBundle/Command/FixtureCategoriesCommand.php

namespace D3hdv\Diablo3Bundle\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument; 
use D3hdv\HdvBundle\Entity\HdvCompte;
use D3hdv\Diablo3Bundle\Entity\Role;
use D3hdv\Diablo3Bundle\Entity\D3Compte;

use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;



class FixtureAdminHdvCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this->setName('D3hdvHdv:fixture:AdminHdv');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
	// On récupère l'EntityManager
	$em = $this->getContainer()->get('doctrine.orm.entity_manager');

	$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:Role');
	$D3Admin= $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:D3Compte')->findByLogin("admin");
	// On récupère l'entité correspondant à l'id $id
	$Roles_User_Hdv = $repository->findByName("ROLE_USER");
	$Roles_Admin_Hdv = $repository->findByName("ROLE_ADMIN");

	$HdvCompte = new HdvCompte();
	// On donne le login Admin à notre nouvel utilisateur
	$HdvCompte->setUsername('adminhdv');
	$HdvCompte->setEmail('admin@hdv.net');
	// On cré un salt pour amélioré la sécurité
	$HdvCompte->setSalt(md5(time()));

	// On crée un mot de passe (attention, comme vous pouvez le voir, il faut utiliser les même paramètres
	// que spécifiés dans le fichier security.ym, a sacoir SHA512 avec 10 itérations.        
	$encoder = new MessageDigestPasswordEncoder('sha512', true, 10);
	// On crée donc le mot de passe "test" à partir de l'encodage choisi au-dessus
	$password = $encoder->encodePassword('12345', $HdvCompte->getSalt());
	// On applique le mot de passe à l'utilisateur

	$HdvCompte->setPassword($password);
	
	$HdvCompte->addUserRole($Roles_User_Hdv[0]);
	$HdvCompte->addUserRole($Roles_Admin_Hdv[0]);
	$HdvCompte->setDiablo3Compte($D3Admin[0]);

	$em->persist($HdvCompte);

	$output->writeln('Enregistrement du compte Admin Hôtel des Ventes  ...');

	// On déclenche l'neregistrement
	$em->flush();

	// On retourne 0 pour dire que la commande s'est bien exécutée
	return 0;
    }
}

?>
